package main

import (
	"fmt"
)

func r(x string) {
	fmt.Println(x)
}

func fPanicTest() {
	r("我是fPanicTest函数中的第1行.")
	a := []int{1, 2}
	a = append(a, 3)
	panic("这里是我认为引起的panic测试。")
	r("我是fPanicTest函数中的第3行.") //发生panic后 我就不会再被执行了。
}

func recoverTest() {
	r("我是recover函数4")
	defer func() {
		if err := recover(); err != nil { //err其实就是panic传入的内容。
			fmt.Println("err :", err)
			r("这里是recover函数defer里面的内容。")
		}
	}()
	fPanicTest() //开始调用panic函数
	r("如果发生了panic 这里的代码就不会被执行。")
}

func main() {
	recoverTest()
	//fPanicTest()
}
